package com.songlanyun.modules.shop.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;

import com.songlanyun.common.drive.RootEntity;
import com.songlanyun.common.utils.custom.MathUtils;
import lombok.Data;

import javax.validation.constraints.NotBlank;

/**
 * 商家表
 *
 * @author wuchao
 * @email sunlightcs@gmail.com
 * @date 2020-12-17 15:05:27
 */
@Data
@TableName("yxt_shop")
public class ShopEntity extends RootEntity<Long, ShopEntity> implements Serializable {
    private static final long serialVersionUID = 1L;

    {
        gainsAble = BigDecimal.ZERO;
        gainsSettled = BigDecimal.ZERO;
        gainsTakeOut = BigDecimal.ZERO;
        commissionRate = BigDecimal.ZERO;
    }

    /**
     *
     */
    @TableId
    private Long id;
    /**
     * 会员id
     */
    private Long userId;
    /**
     * 店铺名
     */
    private String shopName;
    /**
     * 店铺地图标点
     */
    private String mapPunctuation;
    /**
     * 店铺地址
     */
    private String address;
    /**
     * 店铺logo
     */
    private String logo;
    /**
     * 店铺图片
     */
    private String storeImages;
    /**
     * 店铺介绍
     */
    private String remark;
    /**
     * 联系电话
     */
    private String mobile;
    /**
     * 客服电话最多30个字
     */
    private String customerServicePhone;
    /**
     * 负者人姓名
     */
    private String loser;
    /**
     * 商名主体名称
     */
    private String mainName;
    /**
     * 省编号
     */
    private String provinceCode;
    /**
     * 省的名称
     */
    private String provinceName;
    /**
     * 市编号
     */
    private String cityCode;
    /**
     * 市名称
     */
    private String cityName;
    /**
     * 区编号
     */
    private String areaCode;
    /**
     * 区名称
     */
    private String areaName;

    /**
     * 注意事项
     */
    private String noticeItems;
    /**
     * 场地说明
     */
    private String placeRemark;
    /**
     * 营业时间
     */
    private String businessHours;
    /**
     * 时间段  ++
     */
    private String timeQuantum;
    /**
     * 微信经度
     */
    private String txLongitude;
    /**
     * 微信纬度
     */
    private String txLatitude;
    /**
     * 锁定状态（0正常，1锁定）
     */
    private Integer lockStatus;

    public Boolean loadLockStatus() {
        return this.lockStatus == 1;
    }

    /**
     * 锁定的时间
     */
    private Date lockTime;
    /**
     *
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    /**
     *
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
    /**
     * 可提现
     */
    private BigDecimal gainsAble;
    /**
     * 已结算所得
     */
    private BigDecimal gainsSettled;
    /**
     * 已提现所得
     */
    private BigDecimal gainsTakeOut;
    /**
     * 锁定金额
     */
    @TableField(exist = false)
    private BigDecimal lockAmount;
    /**
     * 是否是平台店铺
     */
    private Boolean platformShop;
    /**
     * 评价分数
     */
    private BigDecimal average;

    // --------------企业信息---------------
    /**
     * 企业名称
     */
    private String companyName;
    /**
     * 统一信用代码
     */
    private String creditCode;
    /**
     * 经营范围
     */
    private String businessScope;
    /**
     * 住址
     */
    private String companyAddress;
    /**
     * 企业省市区
     */
    private String province;
    /**
     * 法代名称
     */
    private String legalRepresentative;
    /**
     * 法代证件类型（身份证、护照）
     */
    private Integer idType;
    /**
     * 法代证件号码
     */
    private String idNumber;
    /**
     * 法代手机号
     */
    private String lrMobile;
    /**
     * 法代邮箱
     */
    private String lrEmail;
    /**
     * 商家经营执照
     */
    private String businessLicenseImages;
    /**
     * 身份证正反面
     */
    private String identtyImages;

    // --------------企业信息---------------


    /**
     * 记录两个经纬度之间的距离
     */
    @TableField(exist = false)
    private Double distance;

    /**
     * 是否已分配管理员账号
     */
    @TableField(exist = false)
    private boolean distribution;

    /**
     * 邀请码
     */
    @TableField(exist = false)
    private String invitationCode;
    /**
     * 商家企业信息
     */
    @TableField(exist = false)
    private ShopApplyEntity shopApply;

    /**
     * 提现的手续费率
     */
    private BigDecimal commissionRate;




    /**
     * 增加所得
     *
     * @param value
     */
    public void addGains(BigDecimal value) {
        gainsAble = MathUtils.add(this.gainsAble, value);
        gainsSettled = MathUtils.add(this.gainsSettled, value);
    }

    /**
     * 减少所得
     *
     * @param value
     */
    public void decGains(BigDecimal value) {
        gainsAble = MathUtils.subtract(this.gainsAble, value);
        gainsTakeOut = MathUtils.add(this.gainsTakeOut, value);
    }

    /**
     * 打赏比例
     */
    private BigDecimal rewardRatio;

    /**
     * 优惠信息
     */
    private String specialOffers;

    /**
     * 是否是联盟商家
     */
    private Boolean unionBusiness;

    /**
     * 是否显示
     */
    private Boolean isShow;



    @Override
    public Long getIdentity() {
        return id;
    }


}
